switchroot/generator: Add var.mount to local-fs.target.requires
authorColin Walters <walters@verbum.org>
Wed, 17 May 2017 01:44:22 +0000 (21:44 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Wed, 17 May 2017 13:53:54 +0000 (13:53 +0000)
Unbreaks mounting in CentOS. Newer systemd in Fedora pulls didn't need this, I
think due to `RequiresMountsFor=`. Anyways, this is what the fstab generator
does, and it's clearly right ✓.

Closes: https://github.com/ostreedev/ostree/issues/867
Closes: #869
Approved by: jlebon

src/libostree/ostree-impl-system-generator.c

index 60df145ad1820413ca7088dbd9b6cb8e2a981a34..72f52bc5249690ae7de93a3d616782a54fac31d9 100644 (file)
@@ -212,6 +212,16 @@ _ostree_impl_system_generator (const char *ostree_cmdline,
                              "var.mount", error))
     return FALSE;
 
+  /* And ensure it's required; newer systemd will auto-inject fs dependencies
+   * via RequiresMountsFor and the like, but on older versions (e.g. CentOS) we
+   * need this. It's what the fstab generator does.  And my mother always said,
+   * listen to the fstab generator.
+   */
+  if (!glnx_shutil_mkdir_p_at (normal_dir_dfd, "local-fs.target.requires", 0755, cancellable, error))
+    return FALSE;
+  if (symlinkat ("../var.mount", normal_dir_dfd, "local-fs.target.requires/var.mount") < 0)
+    return glnx_throw_errno_prefix (error, "symlinkat");
+
   return TRUE;
 #else
   return glnx_throw (error, "Not implemented");